/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package practica1_ayd2;

import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author Gracu
 */
public class Listas {

    private ArrayList<Cliente> clientes=new ArrayList<Cliente>();
    private ArrayList<peliculas> peliculas=new ArrayList<peliculas>();
    private ArrayList<Rentas> renta=new ArrayList<Rentas>();
    private ArrayList<Genero> genero=new ArrayList<Genero>();
    private ArrayList<Estudio> estudio=new ArrayList<Estudio>();
    Busquedas busq=new Busquedas();

    /************************GETS*******************************/
    public ArrayList<Cliente> get_clientes(){return clientes;}
    public ArrayList<peliculas> get_peliculas(){return peliculas;}
    public ArrayList<Rentas> get_rentas(){return renta;}
    public ArrayList<Estudio> get_estudio(){return estudio;}
    public ArrayList<Genero> get_genero(){return genero;}

    /************************SETS*******************************/
    public void set_clientes(ArrayList<Cliente> clientes){this.clientes= clientes;}
    public void set_peliculas(ArrayList<peliculas> peliculas){this.peliculas= peliculas;}
    public void set_rentas(ArrayList<Rentas> renta){this.renta=renta;}
    public void set_genero(ArrayList<Genero> genero){this.genero= genero;}
    public void set_estudio(ArrayList<Estudio> estudio){this.estudio=estudio;}
    /***************************************************************************
 *********************AGREGAR VALORES A LOS RESPECTIVOS ARRAYSLIST**********
 **************************************************************************/

    /***************************AGREGAR NUEVO ESTUDIO*******************************/
    public void add_estudio(Principal prin,String estudio){
        if(estudio.length()>0)
            this.estudio.add(new Estudio(estudio));
        else
           JOptionPane.showMessageDialog(prin,"Debe llenar la casilla de estudio");
    }

    /***************************AGREGAR NUEVO GENERO*******************************/
    public void add_genero(Principal prin,String gen){

        if(gen.length()>0){
            genero.add(new Genero(gen));
            
        }
        else
           JOptionPane.showMessageDialog(prin,"Debe llenar la casilla de genero");
    }

/***************************AGREGAR NUEVA PELICULA*******************************/
    public void add_pelicula(Principal prin,String genero, String estudio, String nombre, String id_pelicula,String nombrepelicula){
        if(genero!=null && estudio !=null){
            if(nombre.length()>0 && id_pelicula.length()>0 && genero.length()>0 && estudio.length()>0){
                if(this.isNumeric(id_pelicula)){
                    if(this.busq.search_peliculas_id(peliculas,Integer.parseInt(id_pelicula))==false){
                        peliculas.add(new peliculas(genero,estudio,nombre,Integer.parseInt(id_pelicula),Integer.parseInt(nombrepelicula)));
                        
                        JOptionPane.showMessageDialog(prin,"Pelicula agregada con exito");
                    }
                    else
                        JOptionPane.showMessageDialog(prin,"El id de la pelicula ya existe utlice otro");

                }
                else
                   JOptionPane.showMessageDialog(prin,"Verifique que el id de la pelicula sea numero");
            }
            else
                JOptionPane.showMessageDialog(prin,"Debe llenar todas las casillas");
        }
        else
                JOptionPane.showMessageDialog(prin,"No existen generos o estudios debe agregar al menos uno");

    }

/***************************AGREGAR NUEVO CLIENTE*******************************/

    public void add_cliente(Principal prin,String id_cliente,String nombre, String apellido, String direccion, String edad,String clave){
        if(edad.length()>0 && id_cliente.length()>0 && nombre.length()>0 && apellido.length()>0 && direccion.length()>0 && clave.length()>0){
            if(this.isNumeric(edad) && this.isNumeric(id_cliente)){
               if(this.busq.search_cliente_id(clientes,Integer.parseInt(id_cliente))==false){
                    clientes.add(new Cliente(Integer.parseInt(id_cliente),nombre,apellido,direccion,Integer.parseInt(edad),clave));
                    JOptionPane.showMessageDialog(prin,"Cliente agregado con exito");
                }
                else
                    JOptionPane.showMessageDialog(prin,"El id del cliente ya existe utlice otro");
            }
           else
               JOptionPane.showMessageDialog(prin,"Verifique que la edad o el id sean valores numericos");
        }
        else
            JOptionPane.showMessageDialog(prin,"Debe llenar todas las casillas");
    }

    /***************************AGREGAR NUEVA RENTA*******************************/
    public void add_renta(Principal prin,String clave,String id_renta,String id_cliente,String id_pelicula, String dia, String mes,String anio){
        //verificar si los datos obtenidos son numericos
        if(id_pelicula!=null)
            if(this.isNumeric(id_cliente) && this.isNumeric(id_renta) && this.isNumeric(id_pelicula)&& this.isNumeric(dia)&& this.isNumeric(mes) && this.isNumeric(anio)){
               if(this.busq.search_cliente_id(clientes,Integer.parseInt(id_cliente))==false)
               {
                   JOptionPane.showMessageDialog(prin,"No existe el cliente verifique el id");
               }
                else{
                   //verificar la edad del cliente y la de la pelicula
                   int edad_cliente=this.busq.search_cliente_edad(clientes,Integer.parseInt(id_cliente));
                   int edad_pelicula=this.busq.search_pelicula_edad(peliculas, Integer.parseInt(id_pelicula));

                   if(edad_cliente<edad_pelicula){
                        JOptionPane.showMessageDialog(prin,"La edad del cliente no es apta para esta pelicula");
                   }
                   else{
                       //se procede a verificar si la clave del cliente coincide
                       
                       String clave_id=this.busq.search_cliente_clave(clientes,Integer.parseInt(id_cliente));
                       if(clave.equals(clave_id)){
                           ArrayList<Rentas> newrentas=this.busq.search_renta_array(renta, Integer.parseInt(id_cliente));
                           //verificar el maximo de peliculas prestadas por este cliente
                           if(newrentas.size()<3){
                               //busco si el id de la renta existe.
                               if(busq.search_renta_id(renta,Integer.parseInt(id_renta))==false)
                                    renta.add(new Rentas(Integer.parseInt(id_renta),Integer.parseInt(id_cliente),Integer.parseInt(id_pelicula),Integer.parseInt(dia), Integer.parseInt(mes),Integer.parseInt(anio)));
                               else
                                   JOptionPane.showMessageDialog(prin,"El id de la renta ya existe prueba con otro");
                           }
                           else{
                                JOptionPane.showMessageDialog(prin,"No se puede rentar, ya agoto el numero de rentas");
                           }
                       }
                       else
                           JOptionPane.showMessageDialog(prin,"Clave invalida");
                   }
                }
            }
           else
               JOptionPane.showMessageDialog(prin,"Verifique que todos los datos sean numericos");
        else
            JOptionPane.showMessageDialog(prin,"No hay peliculas en renta debe agregar al menos una");

    }

    
    public  boolean isNumeric(String cadena){
            try {
                    Integer.parseInt(cadena);
                    return true;
            } catch (NumberFormatException nfe){
                    return false;
            }
    }

}
